#ifndef _RELIBC_SEMAPHORE_H
#define _RELIBC_SEMAPHORE_H

typedef union {
  char size[4];
  long align;
} sem_t;

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

int sem_init(sem_t *sem, int _pshared, unsigned int value);

int sem_destroy(sem_t *sem);

int sem_wait(sem_t *sem);

int sem_trywait(sem_t *sem);

int sem_post(sem_t *sem);

int sem_getvalue(sem_t *sem, int *sval);

#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus

#endif /* _RELIBC_SEMAPHORE_H */
